package com.rinzin.service;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

/**
 * @BelongsProject:microservice
 * @BelongsPackage:com.rinzin.service
 * @Author:Rinzin
 * @CreateTime:2020-09-25-20-37
 * @Description:RestTemplate调用实现熔断
 **/

@Service
public class RestService {

    @Autowired
    RestTemplate restTemplate;

    //@HystrixCommand(fallbackMethod="getUserBack")
    public String getUser(){
        String url = "http://provider/user/info";
        String str = restTemplate.getForObject(url, String.class);
        return str;
    }

    /**
     * 不带参数（如果存在参数Throwable throwable的方法，会默认调用有参数的方法，
     * 无参数的方法不调用）
     * @return
     */
    public String getUserBack(){
        return "hehe";
    }

    /**
     * 可以加异常的参数，对异常进行捕获，对不同的异常进行不同的处理
     * @param throwable
     * @return
     */
    public String getUserBack(Throwable throwable){
        System.out.println(throwable.getMessage());
        return "haha";
    }
}
